home *** CD-ROM | disk | FTP | other *** search
/ Gold Medal Software 2 / Gold Medal Software Volume 2 (Gold Medal) (1994).iso / comms / reglw2os.arj / HOST.SCR < prev    next >
Text File  |  1993-07-30  |  17KB  |  698 lines

  1. **
  2. ** LiveWire 2.0a Host Mode
  3. **
  4. ** Written by Les Novell 1991
  5. **
  6. ** You may modify this script file to meed your needs
  7. **
  8.  
  9. Set TimeOut=60
  10. OnTimeOut UserHungUp
  11.  
  12. ** Current User Information
  13. String Name=""
  14. String Password=""
  15. String Address1=""
  16. String Address2=""
  17. String PhoneNumber=""
  18. String Age=""
  19.  
  20. ** Host Mode Configuration Information
  21. String MessageDir=".\MESSAGES"
  22. String FileDir="."
  23. String SysopPassword="PASSWORD"
  24. Int MaxTime=60
  25. Int LockPort=0
  26.  
  27. ** Events Used By The Host
  28. Integer LookForRing=0
  29. Integer OnHangup=0
  30. Integer LookForLocal=0
  31.  
  32. ** Global Variables
  33. String FileToDisplay=""
  34. String LogonName=""
  35. String LogonPassword=""
  36. Integer WinUp=0
  37.  
  38. :StartHost
  39.     Log "Host Mode Initiated"
  40.     Window 1,1,80,24
  41.     FgBg 0,7
  42.     ClrScr
  43.     Window 1,1,80,23
  44.     FgBg 15,0
  45.     ClrScr
  46.  
  47.     Box 5,5,60,14,"LiveWire Host / ESC to quit",1
  48.     Set WinUp=1
  49.     Set LocalOnly=0
  50.     Event OnHangup Offline UserHungUp
  51.     Goto InitVideo
  52.     NotExist "HOST.CFG" MakeConfig
  53.     NotExist "HOST.USR" MakeUserList
  54.     Goto ReadConfigFile
  55.     MkDir MessageDir
  56.     MkDir FileDir
  57.     Equal Param=1 DetectedLocal
  58.     Goto SetUpEvents
  59.  
  60.     Log "Awaiting a caller"
  61.     :WaitForEvent
  62.         Wait 1
  63.         Goto WaitForEvent
  64.  
  65.     Halt
  66.  
  67. :Logon
  68. Integer UserFile
  69.  
  70.     KillBox
  71.     Set WinUp=0
  72.     EchoBack 1
  73.  
  74.     Set FileToDisplay="WELCOME"
  75.     Goto DiseFile
  76.  
  77.     :GetLogonName
  78.          Set LogonName=""
  79.          Dise \n "Enter your full name > "
  80.          Get LogonName,40
  81.     Equal LogonName="" GetLogonName
  82.  
  83.     Open "HOST.USR",UserFile
  84.     :ReadUserRecord
  85.         ReadLn UserFile,Name
  86.         ReadLn UserFile,Password
  87.         ReadLn UserFile,Address1
  88.         ReadLn UserFile,Address2
  89.         ReadLn UserFile,PhoneNumber
  90.         ReadLn UserFile,Age
  91.         IfEof UserFile MustBeNewUser
  92.         NotEqual Name=LogonName ReadUserRecord
  93.  
  94.     Close UserFile
  95.     Window 1,1,80,24
  96.     GotoXY 1,24
  97.     FgBg 0,7
  98.     Disp "░ LiveWire HOST MODE ░ " Name " ░ " Password " ░ " PhoneNumber " ░ " Age " ░"
  99.     FgBg 7,0
  100.     Window 1,1,80,23
  101.     GotoXY 1,20
  102.  
  103.     Log "User Called"
  104.     Log Name
  105.  
  106.     Equal Password="" MainMenu
  107.     :GetLogonPassword
  108.         Set LogonPassword=""
  109.         Dise \n "Enter your password  > "
  110.         EchoBack 0
  111.         Get LogonPassword,40
  112.         EchoBack 1
  113.         NotEqual Password=LogonPassword GetLogonPassword
  114.         Goto MainMenu
  115.  
  116.     :MustBeNewUser
  117.         Log "New User Validated"
  118.         Set Name=LogonName
  119.         Set FileToDisplay="NEWUSER"
  120.         Goto DiseFile
  121.         Set PhoneNumber=""
  122.         Set Address1=""
  123.         Set Address2=""
  124.         Set Age=""
  125.         Dise \n "Please fill out the following information for our records:" \n
  126.         Dise "Phone Number      : "
  127.         Get PhoneNumber,40
  128.         Dise \n "Street Address    : "
  129.         Get Address1,70
  130.         Dise \n "City, State & ZIP : "
  131.         Get Address2,70
  132.         Dise \n "Age               : "
  133.         Get Age,3
  134.         Dise \n \n "You must now enter a password for your account on this system." \n
  135.         Dise "If you do not wish to have a password, just press ENTER." \n
  136.  
  137.         String Retry
  138.         :EnterPassword
  139.                 Set Password=""
  140.                 Set Retry=""
  141.                 Dise \n "Password          : "
  142.                 Get Password,30
  143.                 Dise \n "Re-enter your password for verification : "
  144.                 Get Retry,30
  145.                 NotEqual Retry=Password EnterPassword
  146.  
  147.         Dise \n \n "Thank you..."
  148.  
  149.         Window 1,1,80,24
  150.         GotoXY 1,24
  151.         FgBg 0,7
  152.         Disp "░ LiveWire HOST MODE ░ " Name " ░ " Password " ░ " PhoneNumber " ░ " Age " ░"
  153.         FgBg 7,0
  154.         Window 1,1,80,23
  155.         GotoXY 1,20
  156.  
  157.         Open "HOST.USR",UserFile
  158.         GoEof UserFile
  159.         Write UserFile,Name \n
  160.         Write UserFile,Password \n
  161.         Write UserFile,Address1 \n
  162.         Write UserFile,Address2 \n
  163.         Write UserFile,PhoneNumber \n
  164.         Write UserFile,Age \n
  165.         Close UserFile
  166.  
  167.     :MainMenu
  168.     String Option=""
  169.  
  170.         Set FileToDisplay="MAINMENU"
  171.         Goto DiseFile
  172.         Dise "Select a function: "
  173.         GetKey Option
  174.         Dise \n
  175.         Equal Option="H" EndLogon
  176.         Equal Option="F" ShowFiles
  177.         Equal Option="U" UploadFile
  178.         Equal Option="D" DownloadFile
  179.         Equal Option="P" PageSysop
  180.         Equal Option="R" ReadMessages
  181.         Equal Option="S" SendMessage
  182.         Equal Option="O" OperatorFuncs
  183.  
  184.         Destroy Option
  185.         Goto MainMenu
  186.  
  187.     :EndLogon
  188.     Log "User Hung Up Normally"
  189.     Dise \n \n "Thank you for calling... (click)" \n \n
  190.     EchoBack 0
  191.     Delay 250
  192.     HangUp
  193.     Destroy UserFile
  194.     Goto StartHost
  195.  
  196. ::OperatorFuncs
  197. String OpPswd=""
  198. String OpOption=""
  199.  
  200.     Dise \n \n "Enter system operator password: "
  201.     EchoBack 0
  202.     Get OpPswd,40
  203.     EchoBack 1
  204.     NotEqual OpPswd=SysopPassword RetOpFuncs
  205.  
  206.     Log "User Entered Sysop Operations"
  207.     :OpMenu
  208.         Dise " " \n \n "System Operator Functions" \n \n
  209.         Dise "1. Change Message Directory : " MessageDir \n
  210.         Dise "2. Change File Directory    : " FileDir \n
  211.         Dise "3. Locked Baud Rate (0=No)  : " LockPort \n
  212.         Dise "4. Change Sysop Password    : " SysopPassword \n
  213.         Dise "S  Save these options" \n
  214.         Dise "Q  Quit without saving" \n \n
  215.         Dise "Select option: "
  216.         GetKey OpOption
  217.         Dise \n
  218.         Equal OpOption="1" OpGetMsgDir
  219.         Equal OpOption="2" OpGetFileDir
  220.         Equal OpOption="3" OpGetLockPort
  221.         Equal OpOption="4" OpGetPassword
  222.         Equal OpOption="S" OpSaveConfig
  223.         Equal OpOption="Q" OPQuitConfig
  224.         Goto OpMenu
  225.  
  226.     :OpGetMsgDir
  227.         Dise "Edit message directory (DO NOT END WITH A BACKSLASH)" \n
  228.         Dise "> "
  229.         Get MessageDir,70
  230.         Goto OpMenu
  231.  
  232.     :OpGetFileDir
  233.         Dise "Edit files directory (DO NOT END WITH A BACKSLASH)" \n
  234.         Dise "> "
  235.         Get FileDir,70
  236.         Goto OpMenu
  237.  
  238.     :OpGetMaxTime
  239.         Dise "Edit maximum time for each user" \n
  240.         Dise "> "
  241.         Get MaxTime,70
  242.         Goto OpMenu
  243.  
  244.     :OpGetLockPort
  245.         Dise "Edit locked baud rate (1=on 0=off)" \n
  246.         Dise "> "
  247.         Get LockPort,3
  248.         Goto OpMenu
  249.  
  250.     :OpGetPassword
  251.         Dise "Edit sysop password" \n
  252.         Dise "> "
  253.         Get SysopPassword,70
  254.         Goto OpMenu
  255.  
  256.     :OpSaveConfig
  257.         Dise "Saving..."
  258.         Goto MakeConfig
  259.         Dise \n \n
  260.         Goto RetOpFuncs
  261.  
  262.     :OpQuitConfig
  263.         Goto ReadConfigFile
  264.         Dise \n \n
  265.         Goto RetOpFuncs
  266.  
  267.     :RetOpFuncs
  268.         Destroy OpPswd
  269.         Destroy OpOption
  270.         Ret
  271.  
  272. ::SendMessage
  273. Integer MsgFile
  274. Integer MaxMessage=1
  275. Integer ThisMessage=1
  276. Integer LineNo=1
  277. String MsgFileName
  278. String MsgLine
  279. String MsgOption
  280.  
  281.     Log "User Wrote a message"
  282.     NotExist "HOST.MSG" WriteMessage
  283.     Open "HOST.MSG",MsgFile
  284.     Read MsgFile,MaxMessage
  285.     Close MsgFile
  286.     Inc MaxMessage
  287.     Set ThisMessage=MaxMessage
  288.  
  289.     :WriteMessage
  290.         Set MsgFileName=MessageDir
  291.         Cat MsgFileName,"\MESSAGE.",MsgFileName
  292.         Cat MsgFileName,ThisMessage,MsgFileName
  293.         Open MsgFileName,MsgFile
  294.         Dise \n \n "Enter your message"
  295.         Dise \n "End your message by placing a period (.) alone on the last line" \n
  296.         Dise "----------------------------------------------------------------------------" \n
  297.         Write MsgFile," ------------------------------" \n
  298.         Write MsgFile," Message #" ThisMessage \n
  299.         Write MsgFile," From    :" Name \n
  300.         Write MsgFile,"------------------------------" \n
  301.         Write MsgFile, \n
  302.  
  303.         :GetNextMsgLine
  304.             Dise LineNo "> "
  305.             Set MsgLine=""
  306.             Get MsgLine,75
  307.             Dise \n
  308.             Equal MsgLine="." EndMessage
  309.             Write MsgFile,MsgLine \n
  310.             Inc LineNo
  311.             Goto GetNextMsgLine
  312.  
  313.         :EndMessage
  314.         Dise \n "Message Ended" \n
  315.         Dise "[S]ave Message   [C]ontinue Message   [A]bort Message : "
  316.         GetKey MsgOption
  317.         Dise \n
  318.         Equal MsgOption="S" SaveMessage
  319.         Equal MsgOption="C" GetNextMsgLine
  320.         Equal MsgOption="A" AbortMessage
  321.         Goto EndMessage
  322.  
  323.     :SaveMessage
  324.         Write MsgFile,"------------------------------" \n
  325.         Close MsgFile
  326.         DosCmnd "Erase HOST.MSG"
  327.         Open "HOST.MSG",MsgFile
  328.         Write MsgFile,ThisMessage
  329.         Close MsgFile
  330.         Goto RetSendMessage
  331.  
  332.     :AbortMessage
  333.     String DoDos="ERASE "
  334.         Cat DoDos,MsgFileName,DoDos
  335.         DoCmnd DoDos
  336.         Goto RetSendMessage
  337.  
  338.     :RetSendMessage
  339.         Destroy MsgFile
  340.         Destroy MaxMessage
  341.         Destroy ThisMessage
  342.         Destroy LineNo
  343.         Destroy MsgFileName
  344.         Destroy MsgLine
  345.         Destroy MsgOption
  346.         Ret
  347.  
  348. ::ReadMessages
  349. Integer MsgFile
  350. Integer MaxMessage=1
  351. Integer ThisMessage=1
  352. String MsgFileName
  353. String MsgOption
  354.  
  355.     Log "User Read Messages"
  356.     NotExist "HOST.MSG" RetReadMessages
  357.     Open "HOST.MSG",MsgFile
  358.     Read MsgFile,MaxMessage
  359.     Close MsgFile
  360.  
  361.     Dise \n "Messages range from 1 to " MaxMessage \n
  362.     Dise "Enter message to start reading at : "
  363.     Get ThisMessage,3
  364.     Dise \n
  365.     :DisplayMessage
  366.         Set MsgFileName=MessageDir
  367.         Cat MsgFileName,"\MESSAGE.",MsgFileName
  368.         Cat MsgFileName,ThisMessage,MsgFileName
  369.         NotExist MsgFileName SkipToNextMsg
  370.         Set FileToDisplay=MsgFileName
  371.         Goto DiseFile
  372.         Dise \n "[ENTER] for next message or [Q] to quit : "
  373.         GetKey MsgOption
  374.         Dise \n
  375.         Equal MsgOption="Q" RetReadMsg
  376.         :SkipToNextMsg
  377.             Inc ThisMessage
  378.             Greater ThisMessage,MaxMessage RetReadMessages
  379.             Goto DisplayMessage
  380.  
  381.     :RetReadMessages
  382.         Dise \n "Sorry, there are no more messages..." \n
  383.         Wait 2
  384.     :RetReadMsg
  385.         Destroy MsgFile
  386.         Destroy MaxMessage
  387.         Destroy ThisMessage
  388.         Destroy MsgFileName
  389.         Destroy MsgOption
  390.         Ret
  391.  
  392.  
  393. ::PageSysop
  394. String Key
  395.  
  396.     Log "User Attempted To Page Sysop"
  397.     Dise \n \n "Paging operator, press Q to abort..." \n
  398.     Disp "SYSOP: Press 'C' to chat" \n
  399.     :RepeatPage
  400.         Disp ""
  401.         Set Key=""
  402.         GetKey Key
  403.         Equal Key="Q" EndPage
  404.         NotEqual Key="C" RepeatPage
  405.  
  406.     Dise \n \n " You are now in chat mode" \n
  407.     Disp " SYSOP: Type ~ on a blank line to end chat mode"
  408.     Dise \n \n
  409.     Log "Sysop Answered Chat Request"
  410.     :RepeatChatInput
  411.         Set Key=""
  412.         Dise " "
  413.         Get Key,77
  414.         Dise \n
  415.         NotEqual Key="~" RepeatChatInput
  416.  
  417.     :EndPage
  418.         Destroy Key
  419.         Ret
  420.  
  421. ::UploadFile
  422. String ULProtocol=""
  423. String ULFile=""
  424. String ULFile2=""
  425.  
  426.     Set FileToDisplay="PROT"
  427.     Goto DiseFile
  428.     Dise "Select protocol: "
  429.     GetKey ULProtocol
  430.     Dise \n \n "Name of file you are uploading: "
  431.     Get ULFile,13
  432.     Equal ULFile=" " RetUploadFile
  433.     Dise \n
  434.     Cat ULFile2,FileDir,ULFile2
  435.     Cat ULFile2,"\",ULFile2
  436.     Cat ULFile2,ULFile,ULFile2
  437.     ReceiveFile ULProtocol,ULFile2
  438.     Log "User Uploaded A File"
  439.  
  440.     ::RetUploadFile
  441.     Destroy ULProtocol
  442.     Destroy ULFile
  443.     Destroy ULFile2
  444.     Ret
  445.  
  446. ::DownloadFile
  447. String DLProtocol=""
  448. String DLFile=""
  449. String DLFile2=""
  450.  
  451.     Set FileToDisplay="PROT"
  452.     Goto DiseFile
  453.     Dise "Select protocol: "
  454.     GetKey DLProtocol
  455.     Dise \n \n "Name of file you are downloading: "
  456.     Get DLFile,13
  457.     Equal ULFile="" RetDownloadFile
  458.     Dise \n
  459.     Cat DLFile2,FileDir,DLFile2
  460.     Cat DLFile2,"\",DLFile2
  461.     Cat DLFile2,DLFile,DLFile2
  462.     NotExist DLFile2 DLNotExist
  463.     SendFile DLProtocol,DLFile2
  464.     Log "User Downloaded a file"
  465.  
  466.     :RetDownloadFile
  467.     Destroy DLProtocol
  468.     Destroy DLFile
  469.     Destroy DLFile2
  470.     Ret
  471.  
  472.     :DLNotExist
  473.     Dise \n \n "That file does not exist!" \n
  474.     Wait 2
  475.     Goto RetDownloadFile
  476.  
  477.  
  478. ::ShowFiles
  479. String Command="DIR "
  480.  
  481.   Cat Command,FileDir,Command
  482.   Cat Command," >host.out",Command
  483.   DOSCMND Command
  484.   Dise \n \n
  485.   Set FileToDisplay="host.out"
  486.   Goto DiseFile
  487.   Dise \n "Press [ENTER]"
  488.   GetKey Command
  489.   Destroy Command
  490.   Ret
  491.  
  492.  
  493. ::DiseFile
  494. Integer DispFile
  495. String DispLine
  496.  
  497.     Open FileToDisplay,DispFile
  498.  
  499.     :DF_ReadNextLine
  500.         ReadLn DispFile,DispLine
  501.         IfEof DispFile DF_CloseFile
  502.         Dise DispLine \n
  503.         Goto DF_ReadNextLine
  504.  
  505.     :DF_CloseFile
  506.     Close DispFile
  507.     Destroy DispFile
  508.     Destroy DispLine
  509.     Ret
  510.  
  511. :UserHungUp
  512.     Kill OnHangup
  513.     HangUp
  514.     Goto StartHost
  515.  
  516. ::SetUpEvents
  517.     Disp " Waiting for the phone to ring..." \n
  518.     Event LookForLocal Find "LOCAL",DetectedLocal
  519.     Event LookForRing Find "RING",DetectedRing
  520.     Ret
  521.  
  522. :DetectedLocal
  523.     Set LocalOnly=1
  524.     KillEvent DetectedLocal
  525.     KillEvent LookForRing
  526.     Disp \n " Initiating local mode operation" \n
  527.     Goto Logon
  528.  
  529. :DetectedRing
  530. Integer Connect
  531. Integer Connect1200
  532. Integer Connect2400
  533. Integer Connect4800
  534. Integer Connect9600
  535. Integer Connect19200
  536. Integer Connect38400
  537. Integer NoCarrier
  538. Long ConnectRate
  539.  
  540.     KillEvent DetectedLocal
  541.     KillEvent LookForRing
  542.     Log "Detected Phone Ringing"
  543.     Disp \n " Answering Phone" \n
  544.     Set Pace=50
  545.     Send "ATA" \n
  546.     Set Pace=0
  547.  
  548.     Event Connect1200 Find "CONNECT 1200",Connect1200
  549.     Event Connect2400 Find "CONNECT 2400",Connect2400
  550.     Event Connect4800 Find "CONNECT 4800",Connect4800
  551.     Event Connect9600 Find "CONNECT 9600",Connect9600
  552.     Event Connect19200 Find "CONNECT 19200",Connect19200
  553.     Event Connect38400 Find "CONNECT 38400",Connect38400
  554.     Event Connect Find "CONNECT^M",Connect
  555.     Event NoCarrier Find "NO CARRIER^M",NoCarrier
  556.  
  557.     :WaitConnectEvent
  558.         Wait 1
  559.         Goto WaitConnectEvent
  560.  
  561.     :NoCarrier
  562.         KillEvent Connect1200
  563.         KillEvent Connect2400
  564.         KillEvent Connect4800
  565.         KillEvent Connect9600
  566.         KillEvent Connect19200
  567.         KillEvent Connect38400
  568.         KillEvent Connect
  569.         KillEvent NoCarrier
  570.         Destroy Connect1200
  571.         Destroy Connect2400
  572.         Destroy Connect4800
  573.         Destroy Connect9600
  574.         Destroy Connect19200
  575.         Destroy Connect38400
  576.         Destroy Connect
  577.         Destroy NoCarrier
  578.         Destroy ConnectRate
  579.  
  580.         Goto StartHost
  581.  
  582.     :Connect
  583.         Log "Connect 300"
  584.         Set ConnectRate=300
  585.         Goto SetBaudRate
  586.  
  587.     :Connect1200
  588.         Log "Connect 1200"
  589.         Set ConnectRate=1200
  590.         Goto SetBaudRate
  591.  
  592.     :Connect2400
  593.         Log "Connect 2400"
  594.         Set ConnectRate=2400
  595.         Goto SetBaudRate
  596.  
  597.     :Connect9600
  598.         Log "Connect 9600"
  599.         Set ConnectRate=9600
  600.         Goto SetBaudRate
  601.  
  602.     :Connect19200
  603.         Log "Connect 19200"
  604.         Set ConnectRate=19200
  605.         Goto SetBaudRate
  606.  
  607.     :Connect38400
  608.         Log "Connect 38400"
  609.         Set ConnectRate=38400
  610.         Goto SetBaudRate
  611.  
  612.     :SetBaudRate
  613.         Equal LockPort 1 SkipBaudSet
  614.         SetBaud ConnectRate
  615.  
  616.     :SkipBaudSet
  617.     KillEvent Connect1200
  618.     KillEvent Connect2400
  619.     KillEvent Connect4800
  620.     KillEvent Connect9600
  621.     KillEvent Connect19200
  622.     KillEvent Connect38400
  623.     KillEvent Connect
  624.     KillEvent NoCarrier
  625.     Destroy Connect1200
  626.     Destroy Connect2400
  627.     Destroy Connect4800
  628.     Destroy Connect9600
  629.     Destroy Connect19200
  630.     Destroy Connect38400
  631.     Destroy Connect
  632.     Destroy NoCarrier
  633.     Destroy ConnectRate
  634.  
  635.     Goto Logon
  636.  
  637. ::ReadConfigFile
  638. Integer ConfigFile
  639.  
  640.     Log "Read Configuration File"
  641.     Disp " Reading configuration file..."
  642.     Open "HOST.CFG" ConfigFile
  643.     ReadLn ConfigFile MessageDir
  644.     ReadLn ConfigFile FileDir
  645.     ReadLn ConfigFile SysopPassword
  646.     Read ConfigFile MaxTime
  647.     Read ConfigFile LockPort
  648.     Close ConfigFile
  649.     Destroy ConfigFile
  650.     Disp "OK" \n
  651.     Ret
  652.  
  653. ::MakeConfig
  654. Integer ConfigFile
  655.  
  656.     Log "Created Configuration File"
  657.     Disp " Creating configuration file..."
  658.     DosCmnd "Erase HOST.CFG"
  659.     Open "HOST.CFG" ConfigFile
  660.     Write ConfigFile MessageDir \n
  661.     Write ConfigFile FileDir \n
  662.     Write ConfigFile SysopPassword \n
  663.     Write ConfigFile MaxTime \n
  664.     Write ConfigFile LockPort \n
  665.     Close ConfigFile
  666.     Destroy ConfigFile
  667.     Disp "OK" \n
  668.     Ret
  669.  
  670. ::MakeUserList
  671. Integer UserFile
  672.  
  673.     Log "Created User File"
  674.     Disp " Creating user list file..."
  675.     Open "HOST.USR",UserFile
  676.     Close UserFile
  677.     Destroy UserFile
  678.     Disp "OK" \n
  679.     Ret
  680.  
  681. ::InitVideo
  682.     FgBg 15,0
  683.     ClrScr
  684.     Disp " LiveWire 2.0 Host Mode" \n \n
  685.     FgBg 7,0
  686.     Ret
  687.  
  688. :CleanUpScript
  689.     Equal WinUp=1 KillLastBox
  690.     Window 1,1,80,24
  691.     ClrScr
  692.     Disp "LiveWire 2.0 Host Mode Stopped" \n \n
  693.     Halt
  694.  
  695. ::KillLastBox
  696.     KillBox
  697.     Ret
  698.